import { request } from "../../request/index.js";

Page({
  data: {
     address:{},
     cart:[],
     allChecked:false,
     totalPrice:0,
     totalNum:0,
     
  },
  onShow(){
     //获取缓存中的地址
     const address=wx.getStorageSync('address');
     const cart=wx.getStorageSync('cart')||[];
     //数组方法 遍历数组  会接受一个回调函数  所有都为TRue 则为true 有false
     //   const allChecked=cart.length?cart.every(v=>v.checked):false;
     this.setData({address});
     this.setCart(cart);
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
   
  },
  handleChooseAddress(){
     // 小程序内部bAPI获取收货地址  
      wx.chooseAddress({
        success: (result) => {

          wx.setStorageSync('address', result) 
        }
      });
  },
   //商品选中
  handleItemChange(e){
      const goods_id=e.currentTarget.dataset.id;
      let {cart}=this.data;
      let index=cart.findIndex(v=>v.goods_id===goods_id);
      //选中状态取反
      cart[index].checked=!cart[index].checked;
      //5 6  购物车数据重新设置到data  缓存中
      this.setCart(cart);
  },
  //重新计算  底部  全选  总价  总数
  setCart(cart){
   let allChecked=true;
   //   总价格和总数量
   let  totalPrice=0;
   let totalNum=0;
   cart.forEach(v=>{
      if(v.checked){
         totalPrice+=v.num*v.goods_price;
         totalNum+=v.num
      }   else{
         allChecked=false;
      }
    });
    allChecked=cart.length!=0?allChecked:false;
    this.setData({
    cart,totalPrice,totalNum,allChecked
  });
  wx.setStorageSync('cart',cart);
  },
  //全选 反选
  handeItemAllCheck(){
     let {cart,allChecked}=this.data;
     allChecked=!allChecked;
     //循环修改cart数组商品选中状态
     cart.forEach(v=>v.checked=allChecked);
     //修改后的值  放回data  或缓存中
      this.setCart(cart)
  },
   //商品数量编辑
  handleNumEdit(e){
     //获取传递过来的参数
      const {operation,id}=e.currentTarget.dataset;
      //获取购物车数组
     let{cart}=this.data;
     //找到需要修改的商品索引
     const index=cart.findIndex(v=>v.goods_id===id);

   //减1提示框 删除
     if(cart[index].num===1&&operation===-1){
      wx.showModal({
      title: '提示',
      content: '是否要删除!',
      success :(res)=> {
      if (res.confirm) {
         cart.splice(index,1);
         this.setCart(cart);
      }
       else if (res.cancel) {
        
      }
   }
   })
   }else{
       // 修改数量
    cart[index].num+=operation;
    this.setCart(cart);
   };
  },

})